/**
 * 
 */
package sistemaUsuarios;

import java.sql.ResultSet;

import dao.DAOUsuario;

/**
 * @author Fredy
 *
 */
public class Usuario {

	private int id;

	private String nombre;
	private String apellido;

	private String dni;
	
	private String email;
	private String telefono;
	private String direccion;
	private String provincia;
	private String codPostal;
	
	private String tipoUsuario;
	private String usuario;
	private String pass;
	
	private DAOUsuario dao;
	/**
	 * @param id
	 * @param nombre
	 * @param dni
	 * @param email
	 * @param telefono
	 * @param direccion
	 * @param provincia
	 * @param codPostal
	 * @param usuario
	 * @param pass
	 */
	public Usuario(String nombre,String apellido, String dni, String email,
			String telefono, String direccion, String provincia,
			String codPostal,String tipoUsuario, String usuario, String pass, DAOUsuario dao) {
		
		this.nombre = nombre;
		this.apellido = apellido;
		this.dni = dni;
		this.email = email;
		this.telefono = telefono;
		this.direccion = direccion;
		this.provincia = provincia;
		this.codPostal = codPostal;
		this.tipoUsuario = tipoUsuario;
		this.usuario = usuario;
		this.pass = pass;
		
		this.dao = dao;
	}
	
	public Usuario(int idalumno, String nombre2, String apellido2, String dni2,
			String email2, String telefono2, String direccion2,
			String provincia2, String codPostal2, String tipoUsuario2,
			String usuario2, String pass2, DAOUsuario du) {
		// TODO Auto-generated constructor stub
		this.id = idalumno;
		this.nombre = nombre2;
		this.apellido = apellido2;
		this.dni = dni2;
		this.email = email2;
		this.telefono = telefono2;
		this.direccion = direccion2;
		this.provincia = provincia2;
		this.codPostal = codPostal2;
		this.tipoUsuario = tipoUsuario2;
		this.usuario = usuario2;
		this.pass = pass2;
		
		this.dao = du;
	}

	public Usuario() {
		// TODO Auto-generated constructor stub
	}

	public void guardarUsuario(){

		int id;
		id = dao.guardarUsuario(this.nombre,this.apellido, this.dni, this.email,
				this.telefono, this.direccion, this.provincia,
				this.codPostal, this.usuario, this.tipoUsuario, this.pass);
		
		setId(id);
	}
	
	public void eliminarUsuario(){
		
		dao.eliminarUsuario(this.id);
	}
	
	public void modificarUsuario(String nombre, String apellido, String dni, String email,
			String telefono, String direccion, String provincia,
			String codPostal,String tipoUsuario, String usuario, String pass){
		
		this.nombre = nombre;
		this.apellido = apellido;
		this.dni = dni;
		this.email = email;
		this.telefono = telefono;
		this.direccion = direccion;
		this.provincia = provincia;
		this.codPostal = codPostal;
		this.tipoUsuario = tipoUsuario;
		this.usuario = usuario;
		this.pass = pass;
		
	}

	public void modificarUsuario(){
		
		 this.dao.modificarUsuario( id, nombre, apellido,  dni,  email,
				 telefono,  direccion,  provincia,
				 codPostal, tipoUsuario,  usuario,  pass);
	}
	
	public boolean existeUsuario(){
		
		return dao.existeUsuario(this.usuario);
	}
	

	public boolean existeEmail(){
		
		return dao.existeEmail(this.email);
	}
	
	public  boolean emailValido() {
		
		 String EMAIL_REGEX = "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@"
					+ "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";
		 
		 return  this.email.matches(EMAIL_REGEX);
	}
	
	public boolean dniValido(){
		
		String DNI_NIE_REGEX = "([X-Z]{1}[-]?[0-9]{7}[-]?[A-Z])|([0-9]{8}[-]?[A-Z]{1})";
		
		return this.dni.matches(DNI_NIE_REGEX);
	}
	
	public boolean telefonoValido(){
		
		String TLF_REGEX = "([679]{1})([0-9]{8})";
		
		return this.telefono.matches(TLF_REGEX);
	}
	
	public boolean passwordValido(){
		
		return this.pass.length() >= 6;
	}
	
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getNombre() {
		return nombre;
	}

	public String getDni() {
		return dni;
	}

	public String getEmail() {
		return email;
	}

	public String getTelefono() {
		return telefono;
	}

	public String getDireccion() {
		return direccion;
	}

	public String getProvincia() {
		return provincia;
	}

	public String getCodPostal() {
		return codPostal;
	}

	public String getTipoUsuario() {
		return tipoUsuario;
	}

	public String getUsuario() {
		return usuario;
	}

	public String getPass() {
		return pass;
	}

	public DAOUsuario getDao() {
		return dao;
	}
	
	public String getApellido() {
		return apellido;
	}

	public void setApellido(String apellido) {
		this.apellido = apellido;
	}
}
